Each of the past three centuries has been dominated by a single technology. The eighteenth century included great mechanical systems ushering in the industrial revolution. The nineteenth century saw the steam engine's development. During the twentieth century, the key technology was information gathering, processing, and distribution. Other developments include worldwide telephone networks, radio and television, the birth and unprecedented growth in the computer industry, and communication satellites.
At the beginning of the twenty-first century, these areas are rapidly converging, and the differences between collecting, transporting, storing, and processing information are quickly disappearing. For example, enterprises with hundreds of offices spread over a wide geographical area routinely expect to inspect the current status of even their most remote office at the push of a button. As capabilities to gather, process, and distribute information grow, the demand for even more sophisticated information processing platforms grows faster.
One such sophisticated platform for building distributed enterprise applications is a Java 2 Platform, Enterprise Edition (J2EE) from Sun Microsystems. J2EE services are performed in a middle tier between a user's machine and an enterprise's databases and legacy information systems. J2EE comprises a specification, reference implementation, and set of testing suites. Its core components include, for example, Enterprise JavaBeans (EJBs), JavaServer Pages (JSPs), and Java servlets. Other Java 2 Platforms include Java 2 Platform, Standard Edition (J2SE) and Java 2 Platform, Micro Edition (J2ME).
EJBs provide a Java environment for developing and running distributed applications. EJBs are written as software modules that contain the business logic of the application. They reside in and are executed in a runtime environment called an “EJB Container,” which provides a host of common interfaces and services to the EJB. There are three types of EJBs: i) session beans that can be used to perform processing; ii) entity beans that can be used to represent data, which can be a row or a table in a database, and iii) message driven beans that can be generated to process Java Messaging Service (JMS) messages. EJBs inherently provide future scalability and also allow multiple user interfaces to be used. For example, both a Web browser and a Java application could be used to access EJBs, or one could be switched for the other at a later date.
JSPs are an extension to the Java servlet technology that provides a simple programming vehicle for displaying dynamic content on a Web page. The JSP is a hypertext markup language (HTML) page with embedded Java source code that is executed in the Web server or application server. The HTML provides the page layout that will be returned to the Web browser, and the Java provides the processing, for example, to deliver a query to the database and fill in the blank fields with the results. The JSP is compiled into bytecode (into a servlet) when first encountered by the server.
Java servlets are Java applications that run in a Web server or application server and provide server-side processing, typically to access a database or perform e-commerce processing. Because they are written in Java, servlets are portable between servers and operating systems. The servlet programming interface (Java Servlet API) is a standard part of J2EE. If a Web server, such as Microsoft's Internet Information Server (IIS), does not run servlets natively, a third-party servlet plug-in can be installed to add the runtime support.
Most enterprise applications developed in Java need to access databases for data storage and retrieval. Furthermore, many of them need to implement cache mechanisms or other database query performance improvements, or need to implement security restrictions for the access to database data. Most applications implement independently what they need specifically for there applications and may also implement these features repeatedly in various components of the same application.
Thus, there is a need for improved systems and methods for providing a data access layer. For instance, there is a need to provide a data access layer to implement cache mechanisms or other database query performance improvements. Furthermore, there is a need for such improved systems and methods to allow applications to implement these features repeatedly in various components of the same application.